Overview

Sadly, roku SceneGraph has a very limited view architecture. If you come from iOS, Android, or angular, you may be wondering how to know if a view/screen:

In addition to affording these lifecycle events, maestro also provides familiar aggregate views, to allow composing screens together.

BaseAggregateView

A special BaseScreen subclass, which manages showing, or hiding views. The currentView property informs which view is currently active (i.e. the selected tab, or current view on top of a NavController)

Only one screen is ever visible at a time. A screen's lifecycle methods for focus and visibility will all be managed and can be relied upon for ascertaining the proper state of the screen.

TabController

BaseAggregateView subclass which allows you to switch various views. The tabController will display a screen which corresponds to the currently selected item. The screen is created lazily, unless it was specified using addExistingView

Fields

Functions

NavController controls a stack of views stacked one up on the other. When a BaseScreen is added to a NavController it's navController field is set to the navController. In addition the lifecycle methods onAddedToAggregateView and onRemovedFromAggregateView are invoked in accordance with pop, push and reset

Fields

Functions

DynamicContainer

DynamicContainer is analogue to iOS's container view. It affords the embedding of screens, within screens. This is useful for:

It has one method SetNextView, which will set the current view on the container. Note, you can bind directly to this, in mvvm bindings, as maestro knows how to call node functions.

MultiContainer

Allows for display of multiple components on top of each other, in an indexed manner. Set the children with the children field, and then use the index field to specify which child is focused. The MultiContainer will automatically focus on, and scroll to the child at the requested index.

Fields